﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace dacli.vistas.pantallas
{
    public partial class FrmCategorias : Form
    {
        modelos.ExamenesCategoria examenesCategoria;
        modelos.ElementosCategoria elementosCategoria;
        public FrmCategorias()
        {
            InitializeComponent();
            getAutocompletar();
        }

        void getAutocompletar()
        {
            modelos.dao.ExamenesCategoriaDAO examenesDao = new modelos.dao.ExamenesCategoriaDAO();
            var source = new AutoCompleteStringCollection();
            foreach(var item in examenesDao.listar("nombre")){
                source.Add (item);
            }
            txtNombre.AutoCompleteCustomSource = source;
        }

        void getLista()
        {
            modelos.dao.ElementosCategoriaDAO elementosDao = new modelos.dao.ElementosCategoriaDAO();
            var source = new AutoCompleteStringCollection();
            lstElemento.DataSource = elementosDao.listar("nombre", "examenes_categoria_id=" + examenesCategoria.id, "orden");
        }

        void getListaOpciones()
        {
            modelos.dao.OpcionesElementosDAO OpcionesDao = new modelos.dao.OpcionesElementosDAO();
            var source = new AutoCompleteStringCollection();
            lstOpciones.DataSource = OpcionesDao.listar("nombre", "elementos_categoria_id=" + elementosCategoria.id);
        }


        private void FrmCategorias_Load(object sender, EventArgs e)
        {

        }
        void iniciarElementos()
        {
            panElementos.Enabled = true;
            panOpciones.Enabled = false;
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            modelos.dao.ExamenesCategoriaDAO examenesCategoriaDao = new modelos.dao.ExamenesCategoriaDAO();
            examenesCategoria = new modelos.ExamenesCategoria();
            examenesCategoria.nombre = txtNombre.Text;
            examenesCategoria.filas = Convert.ToInt32(TxtFilas.Text);
            examenesCategoriaDao.examenesCategoria = examenesCategoria;
            if (!examenesCategoriaDao.existe("nombre='" + examenesCategoria.nombre + "'"))
            {
                examenesCategoriaDao.incluir();
            }
            else {
                examenesCategoriaDao.consultar("nombre='" + examenesCategoria.nombre + "'");
                examenesCategoriaDao.examenesCategoria.filas = examenesCategoria.filas;
                examenesCategoriaDao.modificar();
            }
            examenesCategoria = examenesCategoriaDao.examenesCategoria;
            iniciarElementos();
            getLista();
        }

        private void txtNombre_Validated(object sender, EventArgs e)
        {
            panElementos.Enabled = false;
            modelos.dao.ExamenesCategoriaDAO examenesCategoriaDao = new modelos.dao.ExamenesCategoriaDAO();
            examenesCategoria = new modelos.ExamenesCategoria();
            examenesCategoria.nombre = txtNombre.Text;
            if (examenesCategoriaDao.consultar("nombre='" + examenesCategoria.nombre + "'"))
            {
                examenesCategoria = examenesCategoriaDao.examenesCategoria;
                TxtFilas.Text = examenesCategoria.filas.ToString();
                iniciarElementos();
                getLista();
            }
        }

        private void btnEleGuardar_Click(object sender, EventArgs e)
        {
            modelos.dao.ElementosCategoriaDAO elementosDao = new modelos.dao.ElementosCategoriaDAO();
            modelos.ElementosCategoria elemento = new modelos.ElementosCategoria();
            elemento.nombre = txtElemento.Text;
            elemento.unico = checkUnico.Checked;
            elemento.ancho = Convert.ToInt32(txtAncho.Text);
            elemento.examenesCategoria = examenesCategoria;
            elementosDao.elementosCategoria= elemento;
            if (!elementosDao.existe("nombre='" + elemento.nombre + "' AND examenes_categoria_id=" + examenesCategoria.id))
            {
                elementosDao.incluir();
            }
            else {
                elementosDao.consultar("nombre='" + elemento.nombre + "'");
                elementosDao.elementosCategoria.ancho = Convert.ToInt32(txtAncho.Text);
                elementosDao.elementosCategoria.unico = checkUnico.Checked;
                elementosDao.modificar();
            }
            getLista();
        }

        private void txtNombre_TextChanged(object sender, EventArgs e)
        {

        }

        private void lstElemento_SelectedIndexChanged(object sender, EventArgs e)
        {
        }

        private void btnOpcGuardar_Click(object sender, EventArgs e)
        {
            modelos.dao.OpcionesElementosDAO opcionesDao = new modelos.dao.OpcionesElementosDAO();
            modelos.OpcionesElementos opciones = new modelos.OpcionesElementos();
            opciones.nombre = txtOpciones.Text;
            opciones.elementosCategoria= elementosCategoria;
            opcionesDao.OpcionesElementos = opciones;
            if (!opcionesDao.existe("nombre='" + opciones.nombre + "' AND elementos_categoria_id=" + elementosCategoria.id))
            {
                opcionesDao.incluir();
            }
            else
            {
                opcionesDao.consultar("nombre='" + opciones.nombre + "' AND elementos_categoria_id=" + elementosCategoria.id);
            }
            getListaOpciones();

        }

        private void lstElemento_Click(object sender, EventArgs e)
        {
            modelos.dao.ElementosCategoriaDAO elementosDao = new modelos.dao.ElementosCategoriaDAO();
            elementosDao.consultar("nombre='" + lstElemento.Text + "' AND examenes_categoria_id=" + examenesCategoria.id);
            elementosCategoria = elementosDao.elementosCategoria;
            txtElemento.Text = elementosCategoria.nombre;
            txtAncho.Text = elementosCategoria.ancho.ToString();
            panOpciones.Enabled = lstElemento.Items.Count > 0;
            getListaOpciones();

        }
    }
}
